package com.codemeta.bokit.mybatis.core.service;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.codemeta.bokit.mybatis.core.page.PageX;

/**
 * mybatis-plus基础业务接口对象
 *
 * @author hice
 * @date 2021/11/19
 */
public interface BaseService<T> extends IService<T> {

    /**
     * 新增时的检查方法
     *
     * @param entity .
     * @return .
     */
    default boolean beforeSave(T entity) {
        return null != entity;
    }

    /**
     * 修改时的检查方法
     *
     * @param entity .
     * @return .
     */
    default boolean beforeUpdateById(T entity) {
        return null != entity;
    }

    /**
     * 翻页查询
     *
     * @param page         翻页对象
     * @param queryWrapper 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper}
     * @return .
     */
    Page<T> pageX(PageX page, Wrapper<T> queryWrapper);

    /**
     * 无条件翻页查询
     *
     * @param page 翻页对象
     * @return .
     * @see Wrappers#emptyWrapper()
     */
    default Page<T> pageX(PageX page) {
        return pageX(page, Wrappers.emptyWrapper());
    }
}